From dc0582fe888711fae124b453e0c2ae4909f56e20 Mon Sep 17 00:00:00 2001 From: robertl Date: Wed, 31 Aug 2005 13:27:28 +0000 Subject: [PATCH] mkshort: obey bounds on empty (!) input. csv: Don't use ampm flag if none given. git-svn-id: http://gpsbabel.googlecode.com/svn/trunk@1382 f51c46e8-681c-474f-0cfe-069cfd0219fb --- gpsbabel/csv_util.c | 9 ++++++++- gpsbabel/internal_styles.c | 40 ++++++++++++++++++++++++++++++++++++-- gpsbabel/mkshort.c | 2 +- 3 files changed, 47 insertions(+), 4 deletions(-) diff --git a/gpsbabel/csv_util.c b/gpsbabel/csv_util.c index 66d728218..b7be5ae40 100644 --- a/gpsbabel/csv_util.c +++ b/gpsbabel/csv_util.c @@ -662,10 +662,17 @@ addhms( const char *s, const char *format ) int min =0; int sec =0; char * ampm = NULL; + int ac; ampm = xmalloc( strlen(s) ); - if (sscanf(s, format, &hour, &min, &sec, ampm)) + ac = sscanf(s, format, &hour, &min, &sec, &m); + /* If no time format in arg string, assume AM */ + if (ac < 4) { + ampm[0] = 0; + } + if (ac) { tt = ((tolower(ampm[0])=='P')?43200:0)+3600*hour+60*min+sec; + } xfree(ampm); return tt; diff --git a/gpsbabel/internal_styles.c b/gpsbabel/internal_styles.c index 269b02537..4093cc952 100644 --- a/gpsbabel/internal_styles.c +++ b/gpsbabel/internal_styles.c @@ -180,6 +180,42 @@ static char fugawi[] = "IFIELD GMT_TIME, \"\", \"%Y%m%d\"\n" "IFIELD HMSG_TIME, \"\", \"%02d%02d%02d\"\n" ; +static char garmin301[] = +"# gpsbabel XCSV style file\n" +"#\n" +"# Format: Garmin 301 Position + Heartrate data\n" +"# Author: Jeff Kalikstein\n" +"# Date: 08/29/2005\n" +"#\n" + +"DESCRIPTION Garmin 301 Custom position and heartrate\n" + +"# FILE LAYOUT DEFINITIIONS:\n" +"#\n" +"FIELD_DELIMITER COMMA\n" +"RECORD_DELIMITER NEWLINE\n" +"BADCHARS COMMA\n" +"#FORMAT_TYPE INTERNAL\n" + +"#\n" +"# HEADER STUFF:\n" +"#\n" +"PROLOGUE Garmin 301 data __FILE__ \n" +"PROLOGUE Timestamp,Latitude, Longitude, Atlitude(ft), heart rate\n" +"#\n" +"# INDIVIDUAL DATA FIELDS:\n" +"#\n" +"IFIELD TIMET_TIME,\"\",\"%ld\"\n" +"IFIELD LAT_DECIMAL, \"\", \"%f\"\n" +"IFIELD LON_DECIMAL, \"\", \"%f\"\n" +"IFIELD ALT_FEET, \"\", \"%fF\"\n" +"IFIELD HEART_RATE,\"\",\" %d\" # beats per minute\n" + + +"# EPILOGUE: \n" +"#EPILOGUE Epilogue Line 1\n" +"#EPILOGUE Epilogue Line 2\n" +; static char gpsdrive[] = "# gpsbabel XCSV style file\n" "#\n" @@ -650,5 +686,5 @@ static char xmapwpt[] = "IFIELD DESCRIPTION, \"\", \"%-.78s\"\n" ; #include "defs.h" -style_vecs_t style_list[] = {{ "xmapwpt", xmapwpt } , { "xmap", xmap } , { "tabsep", tabsep } , { "saplus", saplus } , { "s_and_t", s_and_t } , { "openoffice", openoffice } , { "nima", nima } , { "mxf", mxf } , { "mapconverter", mapconverter } , { "gpsman", gpsman } , { "gpsdrivetrack", gpsdrivetrack } , { "gpsdrive", gpsdrive } , { "fugawi", fugawi } , { "dna", dna } , { "custom", custom } , { "csv", csv } , { "arc", arc } , {0,0}}; -size_t nstyles = 17; +style_vecs_t style_list[] = {{ "xmapwpt", xmapwpt } , { "xmap", xmap } , { "tabsep", tabsep } , { "saplus", saplus } , { "s_and_t", s_and_t } , { "openoffice", openoffice } , { "nima", nima } , { "mxf", mxf } , { "mapconverter", mapconverter } , { "gpsman", gpsman } , { "gpsdrivetrack", gpsdrivetrack } , { "gpsdrive", gpsdrive } , { "garmin301", garmin301 } , { "fugawi", fugawi } , { "dna", dna } , { "custom", custom } , { "csv", csv } , { "arc", arc } , {0,0}}; +size_t nstyles = 18; diff --git a/gpsbabel/mkshort.c b/gpsbabel/mkshort.c index b670d31d9..db5e0a45d 100644 --- a/gpsbabel/mkshort.c +++ b/gpsbabel/mkshort.c @@ -372,7 +372,7 @@ mkshort(void *h, const char *istring) * Walk in the Woods 2. */ np = ostring + strlen(ostring); - while (*(np-1) && isdigit(*(np-1) )) { + while ((np != ostring) && *(np-1) && isdigit(*(np-1) )) { np--; } if (np) { -- 2.30.2